//
// Информация о персонаже(чаре, аккаунте)
//
var char_level = 0;
var char_login = null;
var char_login_show = null;
var char_logged = false;
var char_energy = 0;
var char_exp = 0;

//
// Таблица опыта уровней
//
var table_experience = new Array( 	
	0, 		50, 	80, 	110, 	150, 	195, 	245, 	300, 	361, 	436,
	519, 	610, 	709, 	816, 	931, 	1055, 	1189, 	1333, 	1488, 	1654,
	1831, 	2027, 	2238, 	2464, 	2707, 	2967, 	3244, 	3540, 	3855,	4189,
	4542, 	4914,	5309,	5731,	6172,	6632,	7111,	7609,	8126,	8663,
	9220, 	9807,	10424,	11071,	11758,	12485,	13262,	14089,	14976,	15923,
	16940, 	18027,	19194,	20451,	21808,	100000
);

//
// Проверка авторизации, если авторизирован, то выдераем данные
//
if($('a.my_proff').text() == 'Профиль')
{
	char_login_show = $('div.login a').text();
	char_login = char_login_show.toLowerCase().replace("_", "-");
	char_level = parseInt($('li.mark b').text());
	char_exp = parseInt($('li.mark span').text().split('/')[1]);
	char_energy = parseInt($('li.mark span').text().split('/')[0]);
	char_logged = true;
}

//
// Если мы на странице профиля
//
if(char_logged && new RegExp('http://' + char_login + '.gamer.ru/(.*)').test(document.URL))
{
	//
	// Ставим рамку для полосы опыта
	//
	$('li.my_avatar div').addClass('exp_bar');
	$('li.my_avatar div span').addClass('exp_bar_span');
	
	//
	// Ниже полосы пишем процент текущего опыта
	//
	var percent_box = document.createElement('span');
	$(percent_box).text( $('li.my_avatar div span').css('height') );
	$(percent_box).addClass('exp_percent_box');
	$('li.my_avatar div').after(percent_box);
	
	//
	// Пишем сколько осталось опыта до след. уровня
	//
	var need_exp = table_experience[char_level] - char_exp;
	var need_exp_box = document.createElement('p');
	$(need_exp_box).html('Опыт: <b>' + char_exp + '</b>/<b>' + table_experience[char_level] + '</b><br /><b>' + need_exp + '</b> ед. опыта до след. уровня');
	$('li.level_me p:first').after(need_exp_box);
	
	//
	// Меняем цвет полосы заряда энергии в зависимости от количества энергии
	//
	var energy_band = $('div.enargy span.level');
	var percent = parseInt(energy_band.css('height'));
	if(percent <= 25) { energy_band.css('background-color', '#e00'); }
	else if(percent <= 50) { energy_band.css('background-color', 'orange'); }
	else if(percent <= 75) { energy_band.css('background-color', 'yellow'); }
	else if(percent <= 100) { energy_band.css('background-color', '#71C029'); }	
}

//
// Если сейчас зима меняем некоторые элементы сайта на снежные :)
//
chrome.extension.sendRequest('ext_winter_mode', function(response) 
{
	if(!response) return;
	if($('div#top').css('background-image') == 'url(http://www.gamer.ru/images/grid/top_clean.jpg)')
	{
		$('div#top').css('background-image', 'url(' + chrome.extension.getURL("/images/topclean.jpg") + ')');
	}
});

//
// Если включено, подымаем блок "Облако тегов" выше
//
chrome.extension.sendRequest('ext_cloud_up', function(response) 
{
	if(!response) return;
	$('div.air_sidebar').before($('div.air_sidebar').next());
});

//
// Если включено, скрываем блок "Топ 10 компаний"
//
chrome.extension.sendRequest('ext_hide_top_companies', function(response) 
{
	if(!response) return;
	$('div.left_side_block').eq(2).css('display', 'none');
});

//
// Если включено, скрываем сайдбар при создании поста
//
chrome.extension.sendRequest('ext_hide_sidebar', function(response) 
{
	if(response && new RegExp('/posts/new').test(document.URL)) 
	{
		$('div.col_left').css('display', 'none');
		$('div.col_right').css('margin-left', '0');
		$('textarea.markItUpEditor').css('width', '75%');
	}
});

//
// Если включено, выделяем комментарии от нас
//
chrome.extension.sendRequest('ext_select_own_comments', function(response) 
{
	if(!response) return;
	$('.comment').each(function()
	{
		var comment = $(this);
		if(char_login_show.toLowerCase() == comment.children('.user').find('.author_name').text().toLowerCase())
		{
			comment.css({'background-color': '#fff', 'color': '#000', 'border-top': '3px solid #d47575'});
		}
	});
});

//
// Если включено, выделяем ссылки в постах
//
chrome.extension.sendRequest('ext_lighting_links', function(response) 
{
	if(!response) return;
	$('div.post div.body a').css('color', '#05a');
});

//
// Если включено, скрываем счетчики посещения
//
chrome.extension.sendRequest('ext_hide_counters', function(response) 
{
	if(!response) return;
	$('ul.counters').children('li').css('opacity', 0);
	$('ul.counters').children('li:last').css('opacity', 1);
});

//
// Добавляем ссылку на блог GAMER.ru на главную страницу
//
if($('li.total1 div ul').context != 'undefined')
{
	$('li.total1 div ul').eq(1).append('<li><a href="http://www.gamer.ru/games/1656-gamer-ru/posts">Блог GAMER.ru</a></li>');
}

//
// Если блеклист блогов не пуст, скрываем посты
//
chrome.extension.sendRequest('ext_blacklist_blogs', function(response) 
{
	if(response.length == 0) return;
	
	$('.post h3').each(function()
	{
		var el = $(this);
		var match = false;
		var count = response.length;
		for(var i = 0; i < count; i++)
		{
			if(response[i].toLowerCase() == el.children('a:first').text().toLowerCase())
			{
				match = true;
				break;
			}
		}
		
		if(match) 
		{
			var post_id = new RegExp('post_([0-9]+)_marks').exec(el.children('span:last').attr('class'))[1];
			if(el.next('div.pics') != null)
			{
				el.next('div.pics').css("display", "none");
			}

			if(el.nextAll('div.body') != null)
			{	
				el.nextAll('div.body').css("display", "none");
			}

			if(el.nextAll('div.user') != null)
			{
				el.nextAll('div.user').css("display", "none");
			}	
			
			if(el.nextAll('div.user').prev() != null)
			{
				el.nextAll('div.user').prev().css("display", "none");
			}	
	
			if(el.nextAll('div.user').prev('div[class!=body]') != null)
			{
				el.nextAll('div.user').prev('div[class!=body]').css("display", "none");
			}
			
			var link = $('<a>');
			link.text('Раскрыть пост');
			link.attr('href', '#');
			link.css({'cursor': 'hand', 'text-decoration': 'underline'});
			link.click(function(e) 
			{
				e.preventDefault();
				$('.for_item_post_' + post_id + ' div.pics').css("display", "block");
				$('.for_item_post_' + post_id + ' div.body').css("display", "block");
				$('.for_item_post_' + post_id + ' div.user').css("display", "block");
				$('.for_item_post_' + post_id + ' div.user').prev().css("display", "block");
				$(this).remove();
			});
			el.after(link);
		}
	});
});

//
// Если блеклист пользователей не пуст, скрываем комментарии
//
chrome.extension.sendRequest('ext_blacklist_users', function(response) 
{
	if(new RegExp('http://(.*).gamer.ru/comments(.*)').test(document.URL)) return;
	if(response.length == 0) return;
	
	$('.comment').each(function()
	{
		var el = $(this);
		var match = false;
		var count = response.length;
		for(var i = 0; i < count; i++)
		{
			if(response[i].toLowerCase() == el.children('.user').find('.author_name').text().toLowerCase())
			{
				match = true;
				break;
			}
		}
		
		if(match) 
		{
			var comment_id = new RegExp('vote_comment_([0-9]+)').exec(el.children('.plus_for_comments').attr('id'))[1];
			if(el.children('div.body') != null) el.children('div.body').css("display", "none");
			if(el.children('div.user') != null) el.children('div.user').css("display", "none");	
			if(el.children('div.dekor_c2_1') != null) el.children('div.dekor_c2_1').css("display", "none");
			el.css("padding-bottom", "18px");
			
			var link = $('<a>');
			link.text('Раскрыть комментарий от ' + el.find('a.author_name').text());
			link.attr('href', '#');
			link.css({'cursor': 'hand', 'text-decoration': 'underline'});
			link.click(function(e) 
			{
				e.preventDefault();
				$('.for_item_comment_' + comment_id + ' div.body').css("display", "block");
				$('.for_item_comment_' + comment_id + ' div.user').css("display", "block");
				$('.for_item_comment_' + comment_id + ' div.dekor_c2_1').css("display", "block");
				$('#comment_' + comment_id).css("padding-bottom", "35px");
				$(this).remove();
			});
			el.children('div.body').after(link);
		}
	});
});

//
// Если белый список пользователей не пуст, выделяем комментарии
//
chrome.extension.sendRequest('ext_whitelist_users', function(response) 
{
	if(new RegExp('http://(.*).gamer.ru/comments(.*)').test(document.URL)) return;
	if(response.length == 0) return;
	
	$('.comment').each(function()
	{
		var el = $(this);
		var match = false;
		var count = response.length;
		for(var i = 0; i < count; i++)
		{
			if(response[i].toLowerCase() == el.children('.user').find('.author_name').text().toLowerCase())
			{
				el.css({'background-color': '#fff', 'color': '#000', 'border-top': '3px solid #92c7d1'});
				break;
			}
		}
	});
});